/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.credsoft.copcred.persistencia.dao.jpa;

import br.com.credsoft.copcred.model.vo.Banco;
import br.com.credsoft.copcred.model.vo.Empresa;
import br.com.credsoft.copcred.model.vo.EntidadeFinanceira;
import br.com.credsoft.copcred.model.vo.Parceiro;
import br.com.credsoft.copcred.persistencia.dao.EntidadeFinanceiraDao;
import br.gov.caixa.gisutsa.framework.tapiocaframework.persistencia.dao.GenericCrudDaoPersistence;
import java.util.List;
import javax.persistence.Query;

/**
 *
 * @author Sales
 */
public class EntidadeFinanceiraDaoImpl extends GenericCrudDaoPersistence<EntidadeFinanceira> implements EntidadeFinanceiraDao {

    public List<Banco> listBancos() {
        Query query = this.entityManager.createQuery("SELECT b FROM Banco b");
        return query.getResultList();
    }

    public List<Parceiro> listParceiros() {
        Query query = this.entityManager.createQuery("SELECT p FROM Parceiro p");
        return query.getResultList();
    }

    public List<Banco> listBancos(Empresa empresa) {
        String jpql = "SELECT b FROM Banco b LEFT JOIN b.contratos c WHERE c.empresa = :empresa";

        Query query = this.entityManager.createQuery(jpql);
        query.setParameter("empresa", empresa);

        return query.getResultList();
    }

    public List<Parceiro> listParceiros(Empresa empresa) {
        String jpql = "SELECT p FROM Parceiro p LEFT JOIN p.contratos c WHERE c.empresa = :empresa";

        Query query = this.entityManager.createQuery(jpql);
        query.setParameter("empresa", empresa);

        return query.getResultList();
    }
}
